home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / telecomm / bbs / bbbbs84.lha / rexx / bbsXferStats.baud < prev    next >
Encoding:
Text File  |  1994-11-20  |  4.2 KB  |  175 lines

  1. /* $VER: bbsXferStats.rexx 8.3 (20.11.94) */
  2.  
  3. OPTIONS RESULTS
  4. NUMERIC DIGITS 14
  5.  
  6. SIGNAL ON FAILURE
  7. SIGNAL ON SYNTAX
  8.  
  9. PARSE ARG indx filename colorflag protocol extdir .
  10.  
  11. CR='0D'x
  12. def=''
  13. pen3=''
  14. IF colorflag=0 THEN
  15.   DO
  16.     def=''
  17.     pen3=''
  18.   END
  19. lineup='1B'x'M'
  20. bbspath=GETCLIP('BBS_path')
  21. tfail=''
  22. bytes=''
  23. Status z
  24. string=RESULT
  25. string=COMPRESS(string,'0D'x)
  26. Status Vers
  27. BB_VERS=RESULT
  28. IF RIGHT(BB_VERS,4)>1.59 THEN
  29.   DO
  30.     PARSE VAR string . 'Local Name: 'temp . 'Xfer''ed: 'bytes . 'Elapsed Time: 'min':'sec'0A'x .
  31.     slash=LASTPOS('/',temp)
  32.     IF slash=0 THEN slash=LASTPOS(':',temp)
  33.     IF slash~=0 THEN temp=SUBSTR(temp,slash+1)
  34.   END
  35. ELSE PARSE VAR string temp' 'min':'sec . 'Bytes:'bytes .
  36. temp=STRIP(temp)
  37. min=STRIP(min)
  38. sec=STRIP(sec)
  39. bytes=STRIP(bytes)
  40. IF temp~='' & LEFT(UPPER(STRIP(temp)),8)~=LEFT(UPPER(filename),8) THEN
  41.   tfail='wrong file' temp
  42. ELSE IF DATATYPE(min,'W') & DATATYPE(sec,'W') & DATATYPE(bytes,'W') THEN
  43.   DO
  44.     secs=(min*60)+sec
  45.     IF indx=14 THEN CALL DELAY(99) /* wait for dos to finish upload */
  46.     temp=STATEF(PRAGMA('D')'/'filename)
  47.     temp=WORD(temp,2)
  48.     IF ~DATATYPE(temp,'W') THEN temp=0
  49.     IF indx=14 & (temp+1024)<bytes THEN tfail='ul size'
  50.     IF indx=15 & temp>(bytes+1024) THEN tfail='dl size'
  51.   END
  52. ELSE tfail='transfer stats were not numeric! min='min 'sec='sec 'bytes='bytes
  53. IF tfail~='' THEN
  54.   DO
  55.     line=PRAGMA('D')'/'filename pen3'*** Transfer failed! ***'def
  56.     SAY line||CR
  57.     CALL send2log(line 'tfail:'tfail)
  58.     CALL send2log('***' string)
  59.     ADDRESS AREXX bbsSounds.rexx bbspath'Sounds/' 'TFAIL'
  60.     IF indx=14 & WORD(STATEF(filename),2)=0 THEN CALL DELETE(filename)
  61.     EXIT 1
  62.   END
  63. ELSE IF secs>0 THEN
  64.   Say 'Transfer Speed:' TRUNC(bytes/secs+.05,1) 'characters per second.'CR
  65. Remote OFF
  66. Send '^G'
  67. Remote ON
  68. line=left(filename,16,' ')
  69. IF indx=14 THEN
  70.   DO
  71.     temp=countcheck(bbspath'Numbers/Bytes.UpLoad' 0)+bytes
  72.     CALL countcheck(bbspath'Numbers/Bytes.UpLoad' temp)
  73.     line=line 'uled'
  74.   END
  75. ELSE
  76.   DO
  77.     temp=countcheck(bbspath'Numbers/Bytes.DownLoad' 0)+bytes
  78.     CALL countcheck(bbspath'Numbers/Bytes.DownLoad' temp)
  79.     temp=countcheck(bbspath'Numbers/Files.DownLoad' 0)+1
  80.     CALL countcheck(bbspath'Numbers/Files.DownLoad' temp)
  81.     tfiles=''
  82.     xdev=''
  83.     IF EXISTS(filename'.xdl') THEN
  84.       DO
  85.         IF OPEN(f,filename'.xdl','R')~=0 THEN
  86.           DO
  87.             xdev=READLN(f)
  88.             tfiles=READLN(f)
  89.             CALL CLOSE(f)
  90.           END
  91.       END
  92.     ELSE IF extdir~='' THEN
  93.       DO
  94.         num=POS(':',extdir)
  95.         IF num>1 THEN temp=LEFT(extdir,num-1)
  96.         IF SHOWLIST('A',UPPER(temp)) THEN xdev=temp
  97.       END
  98.     IF xdev='' THEN
  99.       DO
  100.         temp=PRAGMA('D')
  101.         xdev=SPACE(LEFT(temp,POS(':',temp)-1),1,'_')
  102.       END
  103.     IF ~DATATYPE(tfiles,'W') THEN tfiles=1
  104.     temp=countcheck(bbspath'Numbers/Bytes.X.'xdev 0)+bytes
  105.     CALL countcheck(bbspath'Numbers/Bytes.X.'xdev temp)
  106.     temp=countcheck(bbspath'Numbers/Files.X.'xdev 0)+tfiles
  107.     CALL countcheck(bbspath'Numbers/Files.X.'xdev temp)
  108.     line=line 'dled'
  109.   END
  110. line=line protocol TIME('C') bytes 'bytes' PRAGMA('D')
  111. CALL send2log(line)
  112. EXIT 0
  113.  
  114.  
  115. countcheck:
  116. PARSE ARG fname' 'cknum' '.
  117. IF ~EXISTS(fname) THEN
  118.   DO
  119.     IF cknum=0 THEN RETURN 0
  120.     IF OPEN(f,fname,'W')=0 THEN RETURN 0
  121.     CALL WRITELN(f,cknum)
  122.     CALL CLOSE(f)
  123.     RETURN cknum
  124.   END
  125. IF OPEN(f,fname,'R')=0 THEN
  126.   DO
  127.     CALL DELAY(99)
  128.     IF OPEN(f,fname,'R')=0 THEN RETURN cknum
  129.   END
  130. retval=STRIP(READLN(f))
  131. CALL CLOSE(f)
  132. IF ~DATATYPE(retval,'W') THEN retval=0
  133. IF ~DATATYPE(cknum,'W') THEN cknum=0
  134. IF retval<cknum THEN
  135.   DO
  136.     IF OPEN(f,fname,'W')~=0 THEN
  137.       DO
  138.         CALL WRITELN(f,cknum)
  139.         CALL CLOSE(f)
  140.         RETURN cknum
  141.       END
  142.   END
  143. RETURN retval
  144.  
  145.  
  146. send2log:
  147. PARSE ARG sendline
  148. logfile=bbspath'Logs/log.'DATE('S')
  149. IF ~OPEN('log',logfile,'A') THEN
  150.   DO
  151.     IF ~OPEN('log',logfile,'W') THEN
  152.       DO
  153.         SAY 'failed to open log file'CR
  154.         RETURN
  155.      END
  156.   END
  157. CALL WRITELN('log',sendline)
  158. CALL CLOSE('log')
  159. RETURN
  160.  
  161.  
  162. FAILURE:
  163. SYNTAX:
  164. lin.1=''ERRORTEXT(RC)''
  165. lin.2=SIGL-1     SOURCELINE(SIGL-1)
  166. lin.3=SIGL ''SOURCELINE(SIGL)''
  167. lin.4=SIGL+1     SOURCELINE(SIGL+1)
  168. DO er=1 TO 4
  169.   IF level>sysoplevel | ~frombb THEN SAY 'bbsKillUser:' lin.er||CR
  170.   IF frombb THEN CALL send2log('bbsXferStats:' lin.er)
  171. END
  172. EXIT 1
  173.  
  174. /* bbsXferStats.rexx */
  175.